package basic11;

import java.util.Scanner;

import basic11.J20_bookDBService;
import basic11.J20_bookDBVO;
import basic11.J20_bookDBDAO;

public class J20_bookDBMain {
	// JDBC 서비스 클래스, 키보드 입력 클래스는
	// 객체 생성없이 바로 사용할 수 있도록 static 으로 선언

	private static final String title = "도서정보조회 프로그램입니다.";
	private static final String menu = ">>> 추가(1) | 조회(2) | 조건검색(3) | 수정(4) | 삭제(5) | 종료(0) <<<";
	private static final String ad = "책 제목 | 출판사 | 작가 순으로 입력하세요";
	private static final String selec = "검색할 데이터의 번호를 입력하세요";
	private static final String modyms = "수정할 데이터의 번호를 입력하세요";
	private static final String modyms2 = "책 제목 | 출판사 | 작가 순으로 입력하세요";
	private static final String delms = "삭제할 데이터의 번호를 입력하세요";

	public static void main(String[] args) {

		J20_bookDBDAO dbDAO = new J20_bookDBDAO();
		Scanner sc = new Scanner(System.in);

		while (true) {
			System.out.println(title);
			System.out.println(menu);

			switch (sc.nextInt()) {
			case 0:
				sc.close();
				System.exit(0);
				break;

			case 1:
				newbookDB(sc, dbDAO);
				break;

			case 2:
				readbookDB(dbDAO);
				break;

			case 3:
				readOnebookDB(sc, dbDAO);
				break;

			case 4:
				modifybookDB(sc, dbDAO);
				break;

			case 5:
				removebookDB(sc, dbDAO);
				break;

			}
		}

	}

	// main 클래스에서 DAO클래스로 메서드를 직접 호출하는 것은 OOP개념에 다소 위배된다.
	// 캡슐화와 보안, 유지보수 관점에서 볼 때 서비스 객체를 하나 더 만들어
	// 그것을 통해 DAO클래스의 메서드를 호출하는 것이 더 나음.

	// 즉, main -> DAO 보다는 Main -> service -> DAO가 나음

	// DAO클래스의 메서드를 호출하는 서비스 메서드를 static으로 선언

	private static void newbookDB(Scanner sc, J20_bookDBDAO dao) {
		System.out.println(ad);
		J20_bookDBVO dvo = new J20_bookDBVO(sc.next(), sc.next(), sc.next());
		dao.insertBook(dvo);
	} // 도서 데이터 입력

	private static void readbookDB(J20_bookDBDAO dao) {
		System.out.println(dao.selectBook());
	} // 배열에 저장된 도서데이터 모두 출력

	private static void readOnebookDB(Scanner sc, J20_bookDBDAO dao) {
		System.out.println(selec);
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		

		
		
		 
		 
		 
		String id = sc.next();
		System.out.println(dao.selectOneBook(id));
	}// id로 배열에 저장된 도서데이터 조건검색

	private static void modifybookDB(Scanner sc, J20_bookDBDAO dao) {
		System.out.println(modyms);
		String id = sc.next();
		System.out.println(modyms2);
		J20_bookDBVO dvo = new J20_bookDBVO(sc.next(), sc.next(), sc.next());
		dvo.setId(id);
		if (dao.updateBook(dvo) == 1)
			System.out.println("성공적으로 데이터 수정됨");

	}

	private static void removebookDB(Scanner sc, J20_bookDBDAO dao) {
		System.out.println(dao.selectBook());
		System.out.println(delms);
		String id = sc.next();
		if (dao.deleteBook(id) == 1)
			System.out.println("성공적으로 삭제됨");

	}

}
